iT邦幫忙

2023 iThome 鐵人賽

DAY 17
0

接下來來介紹網路爬蟲吧,也是Linebot最廣為使用的應用之一,可以輸入行程式碼,讓程式自動抓取網站資訊。

首先先從安裝套件做起

pip install requests

以下實作一個範例

import requests

url = "https://ani.gamer.com.tw/"
response = requests.get(url)
print(response.text)

#output
<!DOCTYPE html>
<html lang="zh-tw">
<head>
    <meta name="viewport" content="width=device-width, initial-scale=1.0,user-scalable=no">
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>巴哈姆特電玩資訊站 - 系統異常回報</title>

終端機輸出的就是requests從網站上抓取下來的資訊,但....

可以發現,本應該出現正常番劇的資訊,但突然報錯,這是因為我們被網站檢測到我們是爬蟲程式,為了避免以上狀況發生,我們可以加上幾行程式碼,來避免網站偵測爬蟲。

headers = {
    'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/115.0.0.0 Safari/537.36',
}
response = requests.get(url, headers=headers)

#output
.
.
.
<a href='animeRef.php?sn=112676' class='theme-list-main' data-gtm-category='首頁' data-gtm-event='點擊主題推薦卡片'>
<div class='theme-img-block' style='pointer-events:none;'>
<div class='theme-img-bg loading'></div>
<img class='theme-img lazyload' src='data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7' data-src='https://p2.bahamut.com.tw/B/ACG/c/76/0000114476.JPG' alt='後空翻少年!!'>
<div class='show-view-number'>
<i class='pic-eye-style material-icons'>remove_red_eye</i>
<p>37.1萬</p>
</div>
.
.
.

這時可以發現,網站輸出變得正常了,因為我們多了一個身分,偽裝成瀏覽器去瀏覽網站,這樣就不會有問題了。

User-Agent的取得方式,打開瀏覽器點開任一網站,F12->Network->隨便點一個檔案

https://ithelp.ithome.com.tw/upload/images/20230927/20146555cS1Rbf8naM.png

這時右邊的Headers的就會出現一堆東西,最下面就可以看到User-Agent了

https://ithelp.ithome.com.tw/upload/images/20230927/20146555JQ1xNN1KVM.png

這邊要跟各位提醒,爬蟲不要短時間同時爬同一個網站太多次,可能會造成網站崩潰、或者是IP被封鎖。

當然還有許多東西可以玩,例如帶cookie、向網站發送POST訊號等等,就請有興趣的各位去鑽研啦~~~


上一篇
[Day 16] 初見 subprocess與Threading
下一篇
[Day 18] 初見Beautifulsoup
系列文
用30天打好Python、LineBot的基礎&基本應用30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言